#!/data/data/com.termux/files/usr/bin/bash
# 系统服务自动启动脚本
 
# 1. 先定义日志文件和log函数（放在最开头，确保全局可用）
LOG_FILE=~/service_start.log
log() {
    # 确保时间戳格式正确，避免特殊字符导致函数失效
    local TIMESTAMP=$(date +'%Y-%m-%d %H:%M:%S')
    echo "[$TIMESTAMP] $1" | tee -a "$LOG_FILE"
}
# 清空日志
> "$LOG_FILE"

echo "[$(date +'%Y-%m-%d %H:%M:%S')] 开始启动系统服务..." | tee -a "$LOG_FILE"

# 启动SSH服务
echo "[$(date +'%Y-%m-%d %H:%M:%S')] 启动SSH服务..." | tee -a "$LOG_FILE"
sshd
if [ $? -eq 0 ]; then
    echo "[$(date +'%Y-%m-%d %H:%M:%S')] SSH服务启动成功" | tee -a "$LOG_FILE"
else
    echo "[$(date +'%Y-%m-%d %H:%M:%S')] SSH服务启动失败" | tee -a "$LOG_FILE"
    exit 1
fi





# 启动数据库服务
echo "[$(date +'%Y-%m-%d %H:%M:%S')] 启动MySQL服务..." | tee -a "$LOG_FILE"
mysqld_safe &
sleep 3

# 启动Redis服务并验证
echo "[$(date +'%Y-%m-%d %H:%M:%S')] 启动Redis服务..." | tee -a "$LOG_FILE"
redis-server &

 # 启动Redis服务并验证（添加配置文件支持）
log "启动Redis服务..."
# 定义Redis配置文件路径
REDIS_CONF=~/.redis/redis.conf
# 先检查是否已有进程
if pgrep -x "redis-server" > /dev/null; then
    log "Redis服务已在运行"
else
    # 检查配置文件是否存在，不存在则创建并添加必要配置
    if [ ! -f "$REDIS_CONF" ]; then
        log "Redis配置文件不存在，创建默认配置..."
        mkdir -p ~/.redis
        echo "ignore-warnings ARM64-COW-BUG" > "$REDIS_CONF"
    fi
    # 使用配置文件启动Redis
    redis-server "$REDIS_CONF" &
    
    # 等待Redis启动（最多等待30秒）
    REDIS_TIMEOUT=30
    REDIS_INTERVAL=2
    REDIS_ELAPSED=0
    log "等待Redis服务就绪..."
    
    while [ $REDIS_ELAPSED -lt $REDIS_TIMEOUT ]; do
        if redis-cli ping | grep -q "PONG"; then
            log "Redis服务启动成功"
            break
        fi
        sleep $REDIS_INTERVAL
        REDIS_ELAPSED=$((REDIS_ELAPSED + REDIS_INTERVAL))
    done
    
    if [ $REDIS_ELAPSED -ge $REDIS_TIMEOUT ]; then
        log "Redis服务启动超时"
        exit 1
    fi
fi

  

 # 6. 启动第一个SRS服务（srs/trunk）- 已成功，无验证
log "启动SRS服务（srs/trunk）..."
SRS1_DIR=~/srs/trunk
SRS1_CONF="$SRS1_DIR/conf/srs.conf"

if [ -d "$SRS1_DIR" ] && [ -f "$SRS1_DIR/objs/srs" ] && [ -f "$SRS1_CONF" ]; then
    if pgrep -f "$SRS1_CONF" > /dev/null; then
        log "SRS服务（srs/trunk）已在运行"
    else
        cd "$SRS1_DIR" && ./objs/srs -c conf/srs.conf &
        sleep 3
        log "SRS服务（srs/trunk）启动命令已执行（SRS日志显示启动成功）"
    fi
else
    log "SRS服务（srs/trunk）文件缺失：检查$SRS1_DIR目录"
    exit 1
fi

# 7. 启动第二个SRS服务（srs-2/trunk）- 已成功，无验证
log "启动SRS服务（srs-2/trunk）..."
SRS2_DIR=~/srs-2/trunk
SRS2_CONF="$SRS2_DIR/conf/srs.conf"

if [ -d "$SRS2_DIR" ] && [ -f "$SRS2_DIR/objs/srs" ] && [ -f "$SRS2_CONF" ]; then
    if pgrep -f "$SRS2_CONF" > /dev/null; then
        log "SRS服务（srs-2/trunk）已在运行"
    else
        cd "$SRS2_DIR" && ./objs/srs -c conf/srs.conf &
        sleep 3
        log "SRS服务（srs-2/trunk）启动命令已执行（SRS日志显示启动成功）"
    fi
else
    log "SRS服务（srs-2/trunk）文件缺失：检查$SRS2_DIR目录"
    exit 1
fi

 


# 启动应用服务
echo "[$(date +'%Y-%m-%d %H:%M:%S')] 启动应用服务..." | tee -a "$LOG_FILE"
cd ~/ruoyi-project && ./start.sh
if [ $? -eq 0 ]; then
    echo "[$(date +'%Y-%m-%d %H:%M:%S')] 所有服务启动完成" | tee -a "$LOG_FILE"
else
    echo "[$(date +'%Y-%m-%d %H:%M:%S')] 应用服务启动失败" | tee -a "$LOG_FILE"
    exit 1
fi